/*
 * Sensorik_HAL.h
 *
 *  Created on: Apr 28, 2011
 *      Author: aaw714
 */

#ifndef SENSORIK_HAL_H_
#define SENSORIK_HAL_H_

#include "SE2header.h"
#include <unistd.h>

// Port der Digitalen IO Karte (s. Datenblatt)
#define D_IOBASE 						0x300 		// Anfangsadresse Ports
#define CONTROL 			(D_IOBASE + 0x03) 		// Adresse von Card Control
#define PORTA 				(D_IOBASE + 0x00) 		// Adresse von Port A
#define PORT_MODE 						0x80		//Portmode = Active

#define INIT_PORTS						0x8A		//10001010: Active = 1, Port A auf Ausgang, B auf Eingang und C auf beides setzen
#define READ_PORTS						0x8B		//10001011: Active = 1, Port A auf Ausgang, B auf Eingang und C komplett auf Eingang setzen

#define PORTB_IRQ_ENABLE 				0x02
#define PORTC_IRQ_ENABLE 				0x04
#define INTERRUPT_ENABLE_REG (D_IOBASE + 0xB)


//Interrupt
#define CHG_STATE_IRQ_STATUS        	0x0F		//IRQ Status Register
#define PORT_B     						0x01
#define PORT_C						    0x02
#define CLR_INTERRUPT					0x18

//fuer sigevent
#define PULSE_CODE 						44
#define IRQ_ID 							11


extern int coid;
extern int cnt123;

const struct sigevent * ISR_handler(void *arg, int id);

class Sensorik_HAL {
public:
	Sensorik_HAL();
	virtual ~Sensorik_HAL();
	void initialSensorik(void);
	int chid, interruptId;
private:

};

#endif /* SENSORIK_HAL_H_ */
